package spring_hibernateannotations;

import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import spring_hibernateannotations.modelo.Livro;

public class TesteAplicacao {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext(
				"conf/conf.xml");
		System.out.println("Spring inicializado");

		BancoDados banco = (BancoDados) ctx.getBean("banco_dados");

		Livro livro1 = new Livro();
		livro1.setTitulo("Spring + Hibernate");
		Livro livro2 = new Livro();
		livro2.setTitulo("Hibernate Avançado");
		System.out.println("Objetos Livro inicializados");

		livro1 = banco.InserirLivro(livro1);
		livro2 = banco.InserirLivro(livro2);
		System.out.println("Livros gravados no banco");

		// zerando os objetos Livro
		livro1 = null;
		livro2 = null;

		System.out.println("Selecionando livros por código");
		livro1 = banco.SelecionarLivroPorCodigo(1);
		exibe(livro1);
		livro2 = banco.SelecionarLivroPorCodigo(2);
		exibe(livro2);

		System.out
				.println("Selecionando livros que contenham 'Hibernate' no título");
		List<Livro> lista = banco.SelecionarLivrosPorTitulo("Hibernate");
		for (Livro l : lista) {
			exibe(l);
		}

		System.out.println("Atualizando livro");
		livro1.setTitulo(livro1.getTitulo() + " Segunda Edição");
		banco.AtualizarLivro(livro1);

		System.out.println("Apagando livro");
		banco.ApagarLivro(livro2);
	}

	public static void exibe(Livro livro) {
		if (livro == null)
			System.out.println("Livro não encontrado");
		else
			System.out.println("Livro -> cod: " + livro.getCod()
					+ " | Título: " + livro.getTitulo());
	}

}
